//==============================================================================
// SeqSampler.hh
// ----------------------------------------------------------------------------
//
//==============================================================================
//.......1.........2.........3.........4.........5.........6.........7.........8
//

#include "LocalSTL.hh"
#include "Sequence.hh"
#include "FASTAFile.hh"
#include "RandomNumberGenerator.hh"

#ifndef _SEQSAMPLER
#define _SEQSAMPLER

class SeqSampler{
public:

  bool OnlyBases(Sequence S, int idx,int fsize);

  void RndFragmentSeq(int FLength,int FOverlap,Sequence &SeqIn,
							 SequenceVector &SVOut,
							 vector<long> &StartLocs,vector<long>&EndLocs,
							 vector<long> &Overlaps);

  void FastFragmentSeq(int FLength,Sequence &SeqIn,
							  SequenceVector &SeqOut);

  void FragmentSeq(int FLength,int FOverlap,Sequence &SeqIn,
						 SequenceVector &SeqOut);

  void FragmentSeq(int FLength,int FOverlap,Sequence &SeqIn,
						 SequenceVector &SeqOut,
						 vector<long> &StartLocs,vector<long> &EndLocs);

  void SampleSeq(int NumSamples,int SampleSize,
					  Sequence &SeqIn,SequenceVector &SamplesOut);

  void AddReverseComplements(SequenceVector &SeqVec);
  void AddAllSenses(SequenceVector &SeqVec);
  void GetRandomSample(int sSize,Sequence &Source,Sequence &SampleOut);

  void CreateReverse(SequenceVector &VecIn,SequenceVector &VecOut);
  void CreateComplement(SequenceVector &VecIn,SequenceVector &VecOut);
  void CreateReverseComplement(SequenceVector &VecIn,SequenceVector &VecOut);


};


#endif
